package info.motteke.mixivoice4j.http.html;

import info.motteke.mixivoice4j.ImageUrl;
import info.motteke.mixivoice4j.MixiVoiceException;
import info.motteke.mixivoice4j.User;
import info.motteke.mixivoice4j.http.StringImageUrl;

import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class RecentVoiceCommentUser implements User {

    private final Element response;

    public RecentVoiceCommentUser(Element response) {
        this.response = response;
    }

    @Override
    public long getId() {
        Elements memberId = response.select(".commentMemberId");

        if (memberId.size() == 0) {
            throw new MixiVoiceException("最新のつぶやきから、コメントしたユーザのIDが取得できません。");
        }

        return Long.parseLong(memberId.val());
    }

    @Override
    public String getNickName() {
        Elements nickname = response.select(".commentNickname");

        if (nickname.size() == 0) {
            throw new MixiVoiceException("最新のつぶやきから、コメントしたユーザのニックネームが取得できません。");
        }

        return nickname.text().trim();
    }

    @Override
    public ImageUrl getThumbnail() {
        Elements img = response.select(".thumb > a > img");

        if (img.size() == 0) {
            throw new MixiVoiceException("最新のつぶやきから、コメントしたユーザのサムネイルが取得できません。");
        }

        return new StringImageUrl(img.attr("src"));
    }
}
